﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace Jurassic_Island
{
    public partial class FormFinal : Form
    {
        private DataSet dsFinales;
        private ENFinal enFin;

        public FormFinal()
        {
            InitializeComponent();
        }

        private void btCerrar_Click(object sender, EventArgs e)
        {
            Close();
            Dispose();
        }

        private void FormFinal_Load(object sender, EventArgs e)
        {
            // TODO: esta línea de código carga datos en la tabla 'jurassicBDDataSet.Finales' Puede moverla o quitarla según sea necesario.
            try
            {
                enFin = new ENFinal();
                dsFinales = new DataSet();

                dsFinales = enFin.ObtenerListadoFinales();
                dgvFinales.DataSource = dsFinales;
                dgvFinales.DataMember = "Finales";
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        private void RefrescarGrid()
        {
            try
            {
                enFin = new ENFinal();
                
                dsFinales = new DataSet();
                dsFinales = enFin.ObtenerListadoFinales();

                dgvFinales.DataSource = dsFinales;
                dgvFinales.DataMember = "Finales";

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }


        private void btInsertar_Click(object sender, EventArgs e)
        {
            FormInsertarFinal f1 = new FormInsertarFinal();
            f1.ShowDialog();
            RefrescarGrid();
            f1.Dispose();
            
        }

        private void btBorrar_Click(object sender, EventArgs e)
        {
            try
            {
                if (dgvFinales.SelectedRows.Count > 0)
                {
                    dsFinales = enFin.ObtenerListadoFinales();

                    if (MessageBox.Show("Seguro que deseas borrar la fila seleccionada?", "Borrar final", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        dsFinales.Tables["Finales"].Rows[dgvFinales.CurrentRow.Index].Delete();

                        if (enFin.ActualizarFinales(dsFinales))
                            MessageBox.Show("Final borrado correctamente", "Correcto", MessageBoxButtons.OK, MessageBoxIcon.Information);

                        else
                            MessageBox.Show("Error, no se ha podido eliminar el final", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

                        //Dispose();
                    }

                    RefrescarGrid();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }    
        }

        private void btEditar_Click(object sender, EventArgs e)
        {

            try
            {

                //if (dgvObjetos.SelectedRows.Count > 0)
                if(dgvFinales.SelectedRows.Count > 0)
                {
                    enFin.Nombre = dgvFinales["Nombre", dgvFinales.CurrentRow.Index].Value.ToString();
                    enFin.Lugar = dgvFinales["Lugar", dgvFinales.CurrentRow.Index].Value.ToString();
                    enFin.Descripcion = dgvFinales["Descripcion", dgvFinales.CurrentRow.Index].Value.ToString();
                    FormInsertarFinal formIns = new FormInsertarFinal(enFin);
                    formIns.ShowDialog();
                    RefrescarGrid();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btBuscar_Click(object sender, EventArgs e)
        {
            if (Regex.Match(tbBuscador.Text, @"^[a-zA-Z]+$").Success)
            {
                try
                {
                    dsFinales = enFin.BuscarListaFinales(tbBuscador.Text);
                    dgvFinales.DataSource = dsFinales;
                    dgvFinales.DataMember = "Finales";
                }

                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else if (tbBuscador.Text == "")
            {
                dsFinales = enFin.ObtenerListadoFinales();
                dgvFinales.DataSource = dsFinales;
                dgvFinales.DataMember = "Finales";
            }
            else
            {
                MessageBox.Show("Parametro incorrecto en la busqueda", "ERROR EN LA BUSQUEDA", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

    


    }
}